Skip to content

feat: allow attendees to add guests to an event - #8719

Open
kesselb wants to merge 1 commit into
mainfrom
invitation-forwarding-by-attendee-ui
Open

feat: allow attendees to add guests to an event#8719
kesselb wants to merge 1 commit into
mainfrom
invitation-forwarding-by-attendee-ui

Conversation

@kesselb

@kesselb kesselb commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Needs nextcloud/server#63167

Organizers get a setting to let attendees of an event invite further people. Attendees can then add guests even though the event is otherwise read-only for them, and remove them again until the event is saved.

The server reports guests off the base instance only, so the option needs the dav attendee_guests capability and is hidden for recurring events.

🤖 AI (if applicable)

  • The content of this PR was partly or fully generated using AI

Organizers get a setting to let attendees of an event invite further people.
Attendees can then add guests even though the event is otherwise read-only for
them, and remove them again until the event is saved.

The server reports guests off the base instance only, so the option needs the
dav attendee_guests capability and is hidden for recurring events.

Assisted-by: ClaudeCode:claude-opus-5

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
@kesselb kesselb self-assigned this Aug 11, 2026
@kesselb kesselb added the 3. to review Waiting for reviews label Aug 11, 2026
@kesselb kesselb added the enhancement New feature request label Aug 11, 2026
@kesselb
kesselb requested a review from tcitworld as a code owner August 11, 2026 19:27
@kesselb
kesselb requested a balanced review from Copilot and removed request for GVodyanov, SebastianKrupinski and tcitworld August 11, 2026 19:28
@codecov

codecov Bot commented Aug 11, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 73.33333% with 4 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/store/calendarObjectInstance.js 0.00% 3 Missing ⚠️
src/models/event.js 50.00% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds attendee-managed guest invitations, gated by the dependent server capability.

Changes:

  • Adds the organizer setting and event-property persistence.
  • Allows attendees to add and temporarily remove guests.
  • Adds capability and eligibility tests.

Reviewed changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/components/Editor/Invitees/InviteesList.vue Enables guest management.
src/components/Editor/Invitees/InviteesListItem.vue Adds temporary guest removal.
src/mixins/EditorMixin.js Computes guest-invitation eligibility.
src/mixins/PropertyMixin.js Registers the setting icon.
src/models/event.js Maps the new event property.
src/store/calendarObjectInstance.js Updates the persisted property.
src/views/EditFull.vue Adds setting and guest controls.
src/views/EditSimple.vue Enables guest controls.
tests/javascript/unit/mixins/EditorMixin.test.js Tests eligibility rules.
tests/javascript/unit/models/event.test.js Updates model expectations.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +452 to +456
isForwardedByMe(attendee) {
// Not once the editor switched to viewing, because the guest reached
// the organizer by then and only they can remove an attendee
return this.canAddGuests
&& this.forwardedAttendees.includes(removeMailtoPrefix(attendee.uri))
Comment thread src/views/EditFull.vue
:value="invitationForwarding"
@update:value="updateInvitationForwarding" />
<PropertySelect
v-if="showAllowAttendeeGuests"
@ChristophWurst

Copy link
Copy Markdown
Member

Not sure about the approach tbh. Why do we need an additional "setting"/property and can not leverage the forwarding allowed condition?

Comment on lines 52 to 74
<InviteesListSearch
v-if="!isReadOnly && hasUserEmailAddress"
v-if="(!isReadOnly || canAddGuests) && hasUserEmailAddress"
:alreadyInvitedEmails="alreadyInvitedEmails"
:organizer="calendarObjectInstance.organizer"
@addAttendee="addAttendee" />
<OrganizerListItem
v-if="hasOrganizer"
:isReadOnly="isReadOnly"
:isSharedWithMe="isSharedWithMe"
:organizer="calendarObjectInstance.organizer"
:organizerSelection="organizerSelection"
:isViewedByOrganizer="isViewedByOrganizer"
@changeOrganizer="changeOrganizer" />
<InviteesListItem
v-for="invitee in limitedInviteesWithoutOrganizer"
:key="invitee.email"
:attendee="invitee"
:isReadOnly="isReadOnly"
:canRemove="isForwardedByMe(invitee)"
:organizerDisplayName="organizerDisplayName"
:members="invitee.members"
:isViewedByOrganizer="isViewedByOrganizer"
@removeAttendee="removeAttendee" />

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wasn't able to test this, the ability to add a guest is not working:

Image
BEGIN:VEVENT
CREATED:20260817T025600Z
DTSTAMP:20260817T025715Z
LAST-MODIFIED:20260817T025715Z
SEQUENCE:3
UID:0c502dd7-9a7c-4488-8536-c4ba1de5db7e
DTSTART;TZID=Asia/Tashkent:20260820T100000
DTEND;TZID=Asia/Tashkent:20260820T110000
TRANSP:OPAQUE
STATUS:CONFIRMED
X-NC-INVITATION-FORWARDING:TRUE
SUMMARY:This is a test event
ATTENDEE;CN=user2@;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;ROLE=
 REQ-PARTICIPANT;RSVP=TRUE:mailto:user2@
ORGANIZER;CN=User One:mailto:user1@
END:VEVENT

Comment on lines +408 to +409
calendarObjectInstance.eventComponent.updatePropertyWithValue('X-NC-ALLOW-ATTENDEE-GUESTS', allowAttendeeGuests)
calendarObjectInstance.allowAttendeeGuests = allowAttendeeGuests

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be... "X-NC-INVITATION-FORWARDING"

Comment thread src/mixins/EditorMixin.js
Comment on lines +255 to +257
if (loadState('core', 'capabilities', {})?.dav?.attendee_guests !== true) {
return false
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You prefer to check against the server version?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews enhancement New feature request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants